package org.itli.wacp.Util;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

    /**
     * 使用MD5算法对字符串进行加密
     * @param input 输入的字符串
     * @return 加密后的MD5值
     */
    public String encrypt(String input) {
        try {
            // 创建一个MD5算法对象
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 计算MD5函数
            md.update(input.getBytes());

            // digest()最后确定返回md5 hash值，返回16位的哈希值
            byte[] md5Bytes = md.digest();

            // 将字节数组转换为BigInteger类型，然后转换为16进制字符串
            BigInteger bigInt = new BigInteger(1, md5Bytes);
            String md5Hex = bigInt.toString(16);

            // 如果生成的字符串未满32位，则前面补0
            while (md5Hex.length() < 32) {
                md5Hex = "0" + md5Hex;
            }

            return md5Hex;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }
}
